'use strict';
// 错误拦截中间件
module.exports = () => {
  return async function errorHandler(ctx, next) {
    try {
      await next();
    } catch (err) {
      ctx.app.emit('error', err, ctx);
      const status = err.status || 500;
      const error = status === 500 && ctx.app.config.env === 'prod' ? 'Ineternal Serve Error 内部服务器错误,已经给管理员发送了通知' : err.message;
      if (status === 500) {
        // TODO 给系统管理员发送短信或者微信的模板消息，此项功能可以根据自己的业务功能发送通知
      }
      ctx.body = { error };
      if (status === 422) {
        ctx.body.detail = err.errors;
      }
      ctx.status = status;
    }
  };
};
